.#{$ns}Tooltip {
    position: absolute;
    top: 0;
    left: 0;
    font-family: inherit;
    border-radius: $borderRadius;
    min-width: $Tooltip-minWidth;
    max-width: $Tooltip-maxWidth;
    text-align: left;
    white-space: normal;
    z-index: $zindex-tooltip;
    word-wrap: break-word;
    background: $Tooltip-bg;
    border: $Tooltip-borderWidth solid $Tooltip-borderColor;
    box-shadow: $Tooltip-boxShadow;

    &-arrow {
        position: absolute;
        display: block;
        width: $Tooltip-arrow-width;
        height: $Tooltip-arrow-height;
        margin-left: -$Tooltip-arrow-width/2;
        left: 50%;

        &::before,
        &::after {
            position: absolute;
            display: block;
            content: '';
            border-color: transparent;
            border-style: solid;
        }
    }

    &--top {
        margin-top: -$Tooltip-arrow-height - px2rem(2px);

        .#{$ns}Tooltip-arrow {
            bottom: ($Tooltip-arrow-height + $Tooltip-borderWidth) * -1;
        }

        .#{$ns}Tooltip-arrow::before,
        .#{$ns}Tooltip-arrow::after {
            border-width: $Tooltip-arrow-height ($Tooltip-arrow-width / 2) 0;
        }

        .#{$ns}Tooltip-arrow::before {
            bottom: 0;
            border-top-color: $Tooltip-arrow-outerColor;
        }

        .#{$ns}Tooltip-arrow::after {
            bottom: $Tooltip-borderWidth;
            border-top-color: $Tooltip-arrow-color;
        }
    }

    &--right {
        margin-left: $Tooltip-arrow-height + px2rem(2px);

        .#{$ns}Tooltip-arrow {
            left: ($Tooltip-borderWidth) * -1;
            width: $Tooltip-arrow-height;
            height: $Tooltip-arrow-width;
            margin-top: -$Tooltip-arrow-width/2;
            top: 50%;
        }

        .#{$ns}Tooltip-arrow::before,
        .#{$ns}Tooltip-arrow::after {
            border-width: ($Tooltip-arrow-width / 2) $Tooltip-arrow-height ($Tooltip-arrow-width / 2) 0;
        }

        .#{$ns}Tooltip-arrow::before {
            left: 0;
            border-right-color: $Tooltip-arrow-outerColor;
        }

        .#{$ns}Tooltip-arrow::after {
            left: $Tooltip-borderWidth;
            border-right-color: $Tooltip-arrow-color;
        }
    }

    &--bottom {
        margin-top: $Tooltip-arrow-height + px2rem(2px);

        .#{$ns}Tooltip-arrow {
            top: ($Tooltip-arrow-height + $Tooltip-borderWidth) * -1;
        }

        .#{$ns}Tooltip-arrow::before,
        .#{$ns}Tooltip-arrow::after {
            border-width: 0 ($Tooltip-arrow-width / 2) $Tooltip-arrow-height ($Tooltip-arrow-width / 2);
        }

        .#{$ns}Tooltip-arrow::before {
            top: 0;
            border-bottom-color: $Tooltip-arrow-outerColor;
        }

        .#{$ns}Tooltip-arrow::after {
            top: $Tooltip-borderWidth;
            border-bottom-color: $Tooltip-arrow-color;
        }

        // This will remove the popover-header's border just below the arrow
        .#{$ns}Tooltip-title::before {
            position: absolute;
            top: 0;
            left: 50%;
            display: block;
            width: $Tooltip-arrow-width;
            margin-left: ($Tooltip-arrow-width / -2);
            content: '';
            border-bottom: $Tooltip-borderWidth solid $Tooltip-title-bg;
        }
    }

    &--left {
        margin-left: -$Tooltip-arrow-height - px2rem(2px);

        .#{$ns}Tooltip-arrow {
            left: auto;
            right: ($Tooltip-arrow-height + $Tooltip-borderWidth) * -1;
            width: $Tooltip-arrow-height;
            height: $Tooltip-arrow-width;
            margin-top: -$Tooltip-arrow-width/2;
            top: 50%;
        }

        .#{$ns}Tooltip-arrow::before,
        .#{$ns}Tooltip-arrow::after {
            border-width: ($Tooltip-arrow-width / 2) 0 ($Tooltip-arrow-width / 2) $Tooltip-arrow-height;
        }

        .#{$ns}Tooltip-arrow::before {
            right: 0;
            border-left-color: $Tooltip-arrow-outerColor;
        }

        .#{$ns}Tooltip-arrow::after {
            right: $Tooltip-borderWidth;
            border-left-color: $Tooltip-arrow-color;
        }
    }

    &-title {
        padding: $Tooltip-title-paddingY $Tooltip-title-paddingX;
        margin-bottom: 0; // Reset the default from Reboot
        font-size: $fontSizeBase;
        color: $Tooltip-title-color;
        background-color: $Tooltip-title-bg;
        border-bottom: $Tooltip-borderWidth solid darken($Tooltip-title-bg, 5%);
        border-top-left-radius: $Tooltip-borderRadius - $Tooltip-borderWidth;
        border-top-right-radius: $Tooltip-borderRadius - $Tooltip-borderWidth;

        &:empty {
            display: none;
        }
    }

    &-body {
        color: $Tooltip-body-color;
        padding: $Tooltip-body-paddingY $Tooltip-body-paddingX;
    }
}


@keyframes tooltipIn {
    from {
        opacity: 0;
        margin: 0;
    }
}

[data-tooltip] {
    position: relative;

    &:after {
        pointer-events: none;
        left: 0;
        top: 50%;
        transform: translateY(-50%);
        position: absolute;
        content: attr(data-tooltip);
        font-size: $Tooltip--attr-fontSize;
        line-height: $Tooltip--attr-lineHeigt;
        text-align: left;
        white-space: nowrap;
        background: $Tooltip--attr-bg;
        border: $Tooltip--attr-borderWidth solid $Tooltip--attr-borderColor;
        border-radius: $Tooltip--attr-borderRadius;
        box-shadow: $Tooltip--attr-boxShadow;
        left: 100%;
        color: $Tooltip--attr-color;
        padding: $Tooltip--attr-paddingY $Tooltip--attr-paddingX;
        display: none;
        animation-duration: 0.2s;
        animation-fill-mode: both;
    }

    &:not(.is-disabled):hover:after {
        display: inline-block;
        animation-name: tooltipIn;

        opacity: 1;
        z-index: $zindex-tooltip;
        margin: 0 0 0 $Tooltip--attr-gap;
        opacity: 1;
    }

    &[data-position='bottom']:after {
        left: 50%;
        top: 100%;
        transform: translateX(-50%);
    }

    &[data-position='bottom']:hover:after {
        margin: $Tooltip--attr-gap 0 0 0;
    }

    &[data-position='left']:after {
        top: 50%;
        right: 100%;
        left: auto;
        transform: translateY(-50%);
    }

    &[data-position='left']:hover:after {
        margin: 0 0 0 $Tooltip--attr-gap;
    }

    &[data-position='top']:after {
        left: 50%;
        top: auto;
        bottom: 100%;
        transform: translateX(-50%);
    }

    &[data-position='top']:hover:after {
        margin: -$Tooltip--attr-gap 0 0 0;
    }

    &:hover:active:after {
        content: '';
        display: none !important;
    }
}